package com.lzh.java;
/*
 * final： 最终的
 * 
 * 1.final可以用来修饰的结构，类、方法、变量
 * 
 * 2.final 用来修饰一个类:此类不能被其他类所继承
 * 		比如：String类，System类、StringBuffer类
 * 
 * 3.final 用来修饰方法：表明此方法不可以被重写
 * 		比如：Object类中getClass();
 * 
 * 4.final 用来修饰变量：此时的"变量"就称为一个常量
 * 		4.1 final修饰属性：可以考虑的位置有：显式初始化、代码块中赋值、构造器中赋值
 * 		4.2 final修饰局部变量：
 * 				尤其是使用final修饰形参时，表明此形参是一个常量。当我们调用此方法时，给常量形参
 * 				赋一个实参。一旦赋值以后，就只能在方法体内使用形参，但不能进行重新赋值。
 * 
 * static final : 用来修饰属性：全局常量
 * 				  
 */
public class FinalTest {
	
	final int WIDTH = 0;
	final int LEFT;
	final int RIGHT;
//	final int DOWN;
	{
		LEFT = 1;
	}
	public  FinalTest() {
		RIGHT = 2;
	}
	public FinalTest(int n) {
		RIGHT = n;
	}
	public void doWidth() {
//		width = 20;
	}
	
//	public void setDown(int down) {
//		this.DOWN = down;
//	}
	
	public void show() {
		
		final int NUM = 10;//常量
	}
	public void show(final int num) {
//		num = 10;//编译不通过
		System.out.println(num);
	}
	public static void main(String[] args) {
		
		int num = 10;
		
		num = num + 5;
		
		FinalTest test = new FinalTest();
//		test.setDown(3);
		
		test.show(10);
	}
}
final class FinalA{
	
}
//class B extends FinalA{ 
//	
//}
//class C extends String{
//	
//}
class AA{
	public final void show() {
		
	}
}
//class BB extends AA{
//	public final void show() {
//		
//	}
//}